home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / gaim / gtkutils.h < prev    next >
C/C++ Source or Header  |  2005-10-18  |  11KB  |  345 lines

  1. /**
  2.  * @file gtkutils.h GTK+ utility functions
  3.  * @ingroup gtkui
  4.  *
  5.  * gaim
  6.  *
  7.  * Gaim is the legal property of its developers, whose names are too numerous
  8.  * to list here.  Please refer to the COPYRIGHT file distributed with this
  9.  * source distribution.
  10.  *
  11.  * This program is free software; you can redistribute it and/or modify
  12.  * it under the terms of the GNU General Public License as published by
  13.  * the Free Software Foundation; either version 2 of the License, or
  14.  * (at your option) any later version.
  15.  *
  16.  * This program is distributed in the hope that it will be useful,
  17.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.  * GNU General Public License for more details.
  20.  *
  21.  * You should have received a copy of the GNU General Public License
  22.  * along with this program; if not, write to the Free Software
  23.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  24.  */
  25. #ifndef _GAIM_GTKUTILS_H_
  26. #define _GAIM_GTKUTILS_H_
  27.  
  28. #include "gtkconv.h"
  29. #include "gtkgaim.h"
  30. #include "prpl.h"
  31.  
  32. typedef enum
  33. {
  34.     GAIM_BUTTON_HORIZONTAL,
  35.     GAIM_BUTTON_VERTICAL
  36.  
  37. } GaimButtonOrientation;
  38.  
  39. typedef enum
  40. {
  41.     GAIM_BUTTON_NONE = 0,
  42.     GAIM_BUTTON_TEXT,
  43.     GAIM_BUTTON_IMAGE,
  44.     GAIM_BUTTON_TEXT_IMAGE
  45.  
  46. } GaimButtonStyle;
  47.  
  48. #ifndef _WIN32
  49. typedef enum
  50. {
  51.     GAIM_BROWSER_DEFAULT = 0,
  52.     GAIM_BROWSER_CURRENT,
  53.     GAIM_BROWSER_NEW_WINDOW,
  54.     GAIM_BROWSER_NEW_TAB
  55.  
  56. } GaimBrowserPlace;
  57. #endif /* _WIN32 */
  58.  
  59. extern guint accels_save_timer;
  60.  
  61. /**
  62.  * Sets up a gtkimhtml widget, loads it with smileys, and sets the
  63.  * default signal handlers.
  64.  *
  65.  * @param imhtml The gtkimhtml widget to setup.
  66.  */
  67. void gaim_setup_imhtml(GtkWidget *imhtml);
  68.  
  69. /**
  70.  * Toggles the sensitivity of a widget.
  71.  *
  72.  * @param widget    @c NULL. Used for signal handlers.
  73.  * @param to_toggle The widget to toggle.
  74.  */
  75. void gaim_gtk_toggle_sensitive(GtkWidget *widget, GtkWidget *to_toggle);
  76.  
  77. /**
  78.  * Checks if text has been entered into a GtkTextEntry widget.  If 
  79.  * so, the GTK_RESPONSE_OK on the given dialog is set to TRUE.  
  80.  * Otherwise GTK_RESPONSE_OK is set to FALSE.
  81.  *
  82.  * @param entry  The text entry widget.
  83.  * @param dialog The dialog containing the text entry widget.
  84.  */
  85. void gaim_gtk_set_sensitive_if_input(GtkWidget *entry, GtkWidget *dialog);
  86.  
  87. /**
  88.  * Toggles the sensitivity of all widgets in a pointer array.
  89.  *
  90.  * @param w    @c NULL. Used for signal handlers.
  91.  * @param data The array containing the widgets to toggle.
  92.  */
  93. void gtk_toggle_sensitive_array(GtkWidget *w, GPtrArray *data);
  94.  
  95. /**
  96.  * Toggles the visibility of a widget.
  97.  *
  98.  * @param widget    @c NULL. Used for signal handlers.
  99.  * @param to_toggle The widget to toggle.
  100.  */
  101. void gaim_gtk_toggle_showhide(GtkWidget *widget, GtkWidget *to_toggle);
  102.  
  103. /**
  104.  * Adds a separator to a menu.
  105.  *
  106.  * @param menu The menu to add a separator to.
  107.  */
  108. void gaim_separator(GtkWidget *menu);
  109.  
  110. /**
  111.  * Creates a menu item.
  112.  *
  113.  * @param menu The menu to which to append the menu item.
  114.  * @param str  The title to use for the newly created menu item.
  115.  *
  116.  * @return The newly created menu item.
  117.  */
  118. GtkWidget *gaim_new_item(GtkWidget *menu, const char *str);
  119.  
  120. /**
  121.  * Creates a check menu item.
  122.  *
  123.  * @param menu     The menu to which to append the check menu item.
  124.  * @param str      The title to use for the newly created menu item.
  125.  * @param sf       A function to call when the menu item is activated.
  126.  * @param data     Data to pass to the signal function.
  127.  * @param checked  The initial state of the check item
  128.  *
  129.  * @return The newly created menu item.
  130.  */
  131. GtkWidget *gaim_new_check_item(GtkWidget *menu, const char *str,
  132.         GtkSignalFunc sf, gpointer data, gboolean checked);
  133.  
  134. /**
  135.  * Creates a menu item.
  136.  *
  137.  * @param menu       The menu to which to append the menu item.
  138.  * @param str        The title for the menu item.
  139.  * @param icon       An icon to place to the left of the menu item,
  140.  *                   or @c NULL for no icon.
  141.  * @param sf         A function to call when the menu item is activated.
  142.  * @param data       Data to pass to the signal function.
  143.  * @param accel_key  Something.
  144.  * @param accel_mods Something.
  145.  * @param mod        Something.
  146.  *
  147.  * @return The newly created menu item.
  148.  */
  149. GtkWidget *gaim_new_item_from_stock(GtkWidget *menu, const char *str,
  150.                                     const char *icon, GtkSignalFunc sf,
  151.                                     gpointer data, guint accel_key,
  152.                                     guint accel_mods, char *mod);
  153.  
  154. /**
  155.  * Creates a button with the specified text and stock icon.
  156.  *
  157.  * @param text  The text for the button.
  158.  * @param icon  The stock icon name.
  159.  * @param style The orientation of the button.
  160.  *
  161.  * @return The button.
  162.  */
  163. GtkWidget *gaim_pixbuf_button_from_stock(const char *text, const char *icon,
  164.                                          GaimButtonOrientation style);
  165.  
  166. /**
  167.  * Creates a toolbar button with the stock icon.
  168.  *
  169.  * @param stock The stock icon name.
  170.  *
  171.  * @return The button.
  172.  */
  173. GtkWidget *gaim_pixbuf_toolbar_button_from_stock(const char *stock);
  174.  
  175. /**
  176.  * Creates a HIG preferences frame.
  177.  *
  178.  * @param parent The widget to put the frame into.
  179.  * @param title  The title for the frame.
  180.  *
  181.  * @return The vbox to put things into.
  182.  */
  183. GtkWidget *gaim_gtk_make_frame(GtkWidget *parent, const char *title);
  184.  
  185. /**
  186.  * Creates a drop-down option menu filled with protocols.
  187.  *
  188.  * @param id        The protocol to select by default.
  189.  * @param cb        The callback to call when a protocol is selected.
  190.  * @param user_data Data to pass to the callback function.
  191.  *
  192.  * @return The drop-down option menu.
  193.  */
  194. GtkWidget *gaim_gtk_protocol_option_menu_new(const char *id,
  195.                                              GCallback cb,
  196.                                              gpointer user_data);
  197.  
  198. /**
  199.  * Creates a drop-down option menu filled with accounts.
  200.  *
  201.  * @param default_account The account to select by default.
  202.  * @param show_all        Whether or not to show all accounts, or just
  203.  *                        active accounts.
  204.  * @param cb              The callback to call when an account is selected.
  205.  * @param filter_func     A function for checking if an account should
  206.  *                        be shown. This can be NULL.
  207.  * @param user_data       Data to pass to the callback function.
  208.  *
  209.  * @return The drop-down option menu.
  210.  */
  211. GtkWidget *gaim_gtk_account_option_menu_new(GaimAccount *default_account,
  212.         gboolean show_all, GCallback cb,
  213.         GaimFilterAccountFunc filter_func, gpointer user_data);
  214.  
  215. /**
  216.  * Gets the currently selected account from an account drop down box.
  217.  *
  218.  * @param optmenu The GtkOptionMenu created by
  219.  *        gaim_gtk_account_option_menu_new.
  220.  * @return Returns the GaimAccount that is currently selected.
  221.  */
  222. GaimAccount *gaim_gtk_account_option_menu_get_selected(GtkWidget *optmenu);
  223.  
  224. /**
  225.  * Sets the currently selected account for an account drop down box.
  226.  *
  227.  * @param optmenu The GtkOptionMenu created by
  228.  *        gaim_gtk_account_option_menu_new.
  229.  * @param account The GaimAccount to select.
  230.  */
  231. void gaim_gtk_account_option_menu_set_selected(GtkWidget *optmenu, GaimAccount *account);
  232.  
  233. /**
  234.  * Check if the given path is a directory or not.  If it is, then modify
  235.  * the given GtkFileSelection dialog so that it displays the given path.
  236.  * If the given path is not a directory, then do nothing.
  237.  *
  238.  * @param path    The path entered in the file selection window by the user.
  239.  * @param filesel The file selection window.
  240.  *
  241.  * @return TRUE if given path is a directory, FALSE otherwise.
  242.  */
  243. gboolean gaim_gtk_check_if_dir(const char *path, GtkFileSelection *filesel);
  244.  
  245. /**
  246.  * Sets up GtkSpell for the given GtkTextView, reporting errors
  247.  * if encountered.
  248.  *
  249.  * This does nothing if Gaim is not compiled with GtkSpell support.
  250.  *
  251.  * @param textview The textview widget to setup spellchecking for.
  252.  */
  253. void gaim_gtk_setup_gtkspell(GtkTextView *textview);
  254.  
  255. /**
  256.  * Stylizes the specified text using HTML, according to the current
  257.  * font options.
  258.  *
  259.  * @param text The text to stylize.
  260.  * @param len  The intended length of the new buffer.
  261.  *
  262.  * @return A newly allocated string of length @a len, containing the
  263.  *         stylized version of @a text.
  264.  *
  265.  * @todo Move this to a UI-specific file.
  266.  */
  267. char *stylize(const gchar *text, int len);
  268.  
  269. /**
  270.  * Save menu accelerators callback
  271.  */
  272. void gaim_gtk_save_accels_cb(GtkAccelGroup *accel_group, guint arg1,
  273.                              GdkModifierType arg2, GClosure *arg3,
  274.                              gpointer data);
  275.  
  276. /**
  277.  * Save menu accelerators
  278.  */
  279. gboolean gaim_gtk_save_accels(gpointer data);
  280.  
  281. /**
  282.  * Load menu accelerators
  283.  */
  284. void gaim_gtk_load_accels();
  285.  
  286. /**
  287.  * Parses an application/x-im-contact MIME message and returns the
  288.  * data inside.
  289.  *
  290.  * @param msg          The MIME message.
  291.  * @param all_accounts If TRUE, check all compatible accounts, online or
  292.  *                     offline. If FALSE, check only online accounts.
  293.  * @param ret_account  The best guess at a compatible protocol,
  294.  *                     based on ret_protocol. If NULL, no account was found.
  295.  * @param ret_protocol The returned protocol type.
  296.  * @param ret_username The returned username.
  297.  * @param ret_alias    The returned alias.
  298.  *
  299.  * @return TRUE if the message was parsed for the minimum necessary data.
  300.  *         FALSE otherwise.
  301.  */
  302. gboolean gaim_gtk_parse_x_im_contact(const char *msg, gboolean all_accounts,
  303.                                      GaimAccount **ret_account,
  304.                                      char **ret_protocol, char **ret_username,
  305.                                      char **ret_alias);
  306.  
  307. /**
  308.  * Sets an ATK name for a given widget.  Also sets the labelled-by 
  309.  * and label-for ATK relationships.
  310.  *
  311.  * @param w The widget that we want to name.
  312.  * @param l A GtkLabel that we want to use as the ATK name for the widget.
  313.  */
  314. void gaim_set_accessible_label(GtkWidget *w, GtkWidget *l);
  315.  
  316. /**
  317.  * A valid GtkMenuPositionFunc.  This is used to determine where 
  318.  * to draw context menu's when the menu is activated with the 
  319.  * keyboard (shift+F10).  If the menu is activated with the mouse, 
  320.  * then you should just use GTK's built-in position function, 
  321.  * because it does a better job of positioning the menu.
  322.  *
  323.  * @param menu The menu we are positioning.
  324.  * @param x Address of the gint representing the horizontal position
  325.  *        where the menu shall be drawn. This is an output parameter.
  326.  * @param y Address of the gint representing the vertical position
  327.  *        where the menu shall be drawn. This is an output parameter.
  328.  * @param push_in This is an output parameter?
  329.  * @param user_data Not used by this particular position function.
  330.  */
  331. void gaim_gtk_treeview_popup_menu_position_func(GtkMenu *menu,
  332.                                                 gint *x,
  333.                                                 gint *y,
  334.                                                 gboolean *push_in,
  335.                                                 gpointer user_data);
  336.  
  337. /**
  338.  * Check if running Gnome.
  339.  *
  340.  * @return TRUE if running Gnome, FALSE otherwise.
  341.  */
  342. gboolean gaim_running_gnome(void);
  343.  
  344. #endif /* _GAIM_GTKUTILS_H_ */
  345.